/*********************************登录系统 类文件**************************************************/
using System.Text;
using System.Security.Cryptography;//MD5加密需引入的命名空间
using System.Data.SqlClient;//数据库操作需引入的命名空间
///
/// DB 的摘要说明
///
public class DB
{
public DB()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
///
/// 连接数据库
///
/// 返回SqlConnection对象
public SqlConnection GetCon()
{
return new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());
}
///
/// 执行SQL语句
///
///SQL语句
/// 返回值为int型:成功返1,失败返回0
public int sqlEx(string cmdstr)
{
SqlConnection con = GetCon();//连接数据库
con.Open();//打开连接
SqlCommand cmd = new SqlCommand(cmdstr, con);
try
{
cmd.ExecuteNonQuery();//执行SQL 语句并返回受影响的行数
return 1;//成功返回1
}
catch (Exception e)
{
return 0;//失败返回0
}
finally
{
con.Dispose();//释放连接对象资源
}
}
///
/// 执行SQL查询语句
///
/// 查询语句
/// 返回DataTable数据表
public DataTable reDt(string cmdstr)
{
SqlConnection con =GetCon();
SqlDataAdapter da = new SqlDataAdapter(cmdstr, con);
DataSet ds = new DataSet();
da.Fill(ds);
return (ds.Tables[0]);
}
///
/// 执行SQL查询语句
///
/// 查询语句
/// 返回SqlDataReader对象dr
public SqlDataReader reDr(string str)
{
SqlConnection conn = GetCon();//连接数据库
conn.Open();//并打开了连接
SqlCommand com = new SqlCommand(str, conn);
SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection);
return dr;//返回SqlDataReader对象dr
}
///
/// MD5加密
///
/// 被加密的字符串
/// 返回加密后的字符串
public string GetMD5(string strPwd)
{
string pwd = "";
//实例化一个md5对象
MD5 md5 = MD5.Create();
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(strPwd));
//翻转生成的MD5码
s.Reverse();
//通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
//只取MD5码的一部分,这样恶意访问者无法知道取的是哪几位
for (int i = 3; i < s.Length - 1; i++)
{
//将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
//进一步对生成的MD5码做一些改造
pwd = pwd + (s[i] < 198 ? s[i] + 28 : s[i]).ToString("X");
}
return pwd;
}
}
/*************************************登录前台文件*****************************************/
|
|
|
用户名: |
|
|
|
密 码: |
|
|
|
验证码: |
|
请输入图片中验证码! |
|
|
|
|
/**************************后台代码**********************************************/
protected void Page_Load(object sender, EventArgs e)
{
}
//注册按钮
protected void btnRegister_Click(object sender, EventArgs e)
{
Response.Redirect("~/Register.aspx");//跳转到用户注册页面
}
//登录按钮
protected void btnLogin_Click(object sender, EventArgs e)
{
//实例化公共类对象
DB db = new DB();
string userName = this.txtUserName.Text.Trim();
string passWord = db.GetMD5(this.txtPwd.Text.Trim());//对密码进行加密处理
string num = this.txtValidateNum.Text.Trim();
if (Session["ValidateNum"].ToString() == num.ToUpper())
{
//获取用户信息
SqlDataReader dr = db.reDr("select * from tb_User where UserName='" + userName + "' and PassWord='" + passWord + "'");
dr.Read();
if (dr.HasRows)//通过dr中是否包含行判断用户是否通过身份验证
{
Session["UserID"] = dr.GetValue(0);//将该用户的ID存入Session["UserID"]中
Session["Role"] = dr.GetValue(4);//将该用户的权限存入Session["Role"]中
Response.Redirect("~/UserManagement.aspx");//跳转到主页
}
else
{
Response.Write("");
}
dr.Close();
}
else
{
Response.Write("");
}
}
/****************************注册网页(前台)Register.aspx *********************************************/
|
|
|
用户名: |
|
检测用户名是否存在 |
|
密码: |
|
|
|
确认密码: |
|
|
|
Email: |
|
|
|
|
以上内容为必填项,请正确填写,否则无法完成注册! |
|
|
|
|
|
|
|
/****************************注册网页(后台)Register.aspx.cs*********************************************/
int reValue;//用于保存返回值。返回值为-1(用户名存在),0(失败),1(成功),2(用户名不存在)
protected void Page_Load(object sender, EventArgs e)
{
}
//注册新用户
protected void btnOk_Click(object sender, EventArgs e)
{
reValue = CheckName();
if (reValue == -1)
{
Response.Write("");
}
else
{
DB db = new DB();
string UserName = this.txtUserName.Text;
string PassWord = db.GetMD5 (this.txtPwd.Text.ToString ());//MD5加密
string Email = this.txtEmail.Text;
string cmdstr = "insert into tb_User(UserName,PassWord,Email) values('" + UserName + "','" + PassWord + "','" + Email + "')";
try
{
reValue = db.sqlEx(cmdstr);
if (reValue == 1)
{
Response.Write("");
Clear();//清空文本框
}
else if (reValue == 0)
{
Response.Write("");
}
}
catch (Exception ee)
{
Response.Write("");
}
}
}
//检测用户名是否存在
protected void lnkbtnCheck_Click(object sender, EventArgs e)
{
//查找用户名是否存在,已经存在返回-1,不存在返回2
reValue = CheckName();
if (reValue == -1)
{
Response.Write("");
this.txtUserName.Focus();
}
else if (reValue == 2)
{
Response.Write("");
this.txtUserName.Focus();
}
}
//验证用户名是否存在
public int CheckName()
{
//实例化公共类对象
DB db = new DB();
string str = "select count(*) from tb_User where UserName='" + this.txtUserName.Text + "'";
try
{
DataTable dt =db.reDt(str);
if (dt.Rows[0][0].ToString() != "0")
{
return -1;//该用户名已经存在
}
else
{
return 2;//该用户名尚未注册
}
}
catch (Exception ee)
{
return 0;
}
}
//清空文本框
public void Clear()
{
this.txtUserName.Text = "";
this.txtPwd.Text = "";
this.txtRepwd.Text = "";
this.txtEmail.Text = "";
}
//返回登录页
protected void btnBack_Click(object sender, EventArgs e)
{
Response.Redirect("~/Login.aspx");
}
/*************************************用户管理前台******************************/
/********************************用户管理后台*UserManagement.aspx.cs****************************/
public static string selVal;//设置查询条件
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Convert.ToBoolean (Session["Role"]))
selVal = "";
else
{
selVal = "where UserID="+Session["UserID"].ToString();
}
DataListBind();
}
}
//用于绑定DataList控件
public void DataListBind()
{
//实例化公共类的对象
DB db = new DB();
//定义SQL语句
string sqlstr = "select * from tb_User "+selVal ;
//实例化数据集DataTable用于存储查询结果
DataTable dt =db.reDt(sqlstr);
//绑定DataList控件
DataList1.DataSource = dt;//设置数据源,用于填充控件中的项的值列表
DataList1.DataBind();//将控件及其所有子控件绑定到指定的数据源
}
//显示EditTemplate模板
protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
{
//设置DataList1控件的编辑项的索引为选择的当前索引
DataList1.EditItemIndex = e.Item.ItemIndex;
//数据绑定
DataListBind();
}
//取消显示EditTemplate模板
protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)
{
//设置DataList1控件的编辑项的索引为-1,即取消编辑
DataList1.EditItemIndex = -1;
//数据绑定
DataListBind();
}
//修改用户密码
protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
{
//实例化公共类的对象
DB db = new DB();
//取得文本框中输入的内容
string userName = ((Label)e.Item.FindControl("lblUserName")).Text;
string oldpassWord = ((TextBox)e.Item.FindControl("txtOldpwd")).Text;
string newpassWord = ((TextBox)e.Item.FindControl("txtNewpwd")).Text;
if (db.GetMD5(oldpassWord) == e.CommandArgument.ToString())
{
string sqlStr = "update tb_User set PassWord='" + db.GetMD5(newpassWord) + "'where UserName='" + userName + "'";
//更新数据库,变量reValue用于保存执行Sql语句的返回值,成功为1,失败为0
int reValue = db.sqlEx(sqlStr);
if (reValue == 0)
Response.Write("");
else
Response.Write("");
//取消编辑状态
DataList1.EditItemIndex = -1;
DataListBind();
}
else
{
Response.Write("");
}
}
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
//实例化公共类的对象
DB db = new DB();
//显示selectTemplate模板
if (e.CommandName == "select")
{
//设置选中行的索引为当前选择行的索引
DataList1.SelectedIndex = e.Item.ItemIndex;
//数据绑定
DataListBind();
}
//对selectTemplate模板中的用户名及Email信息进行更改
if (e.CommandName == "updateName")
{
string userName = ((TextBox)e.Item.FindControl("txtUserName")).Text;
string email = ((TextBox)e.Item.FindControl("txtEmail")).Text;
string userID = e.CommandArgument.ToString ();
string sqlStr = "update tb_User set UserName='" + userName + "',Email='"+email+"' where UserID="+ userID;
//更新数据库,变量reValue用于保存执行Sql语句的返回值,成功为1,失败为0
int reValue = db.sqlEx(sqlStr);
if (reValue == 0)
Response.Write("");
//取消选择状态
DataList1.SelectedIndex = -1;
DataListBind();
}
//取消显示selectTemplate模板
if (e.CommandName == "cancel")
{
//设置选中行的索引为-1,取消该数据项的选择
DataList1.SelectedIndex = -1;
//数据绑定
DataListBind();
}
//设置用户的管理员权限
if (e.CommandName == "setRole")
{
string userID = e.CommandArgument.ToString();
string roleText = ((Button)e.Item.FindControl("btnSetRole")).Text;
bool role = (roleText == "取消管理员权限" ? false : true);
string sqlStr = "update tb_User set Role='" + role + "'where UserID=" + userID;
//更新数据库,变量reValue用于保存执行Sql语句的返回值,成功为1,失败为0
int reValue = db.sqlEx(sqlStr);
if (reValue == 0)
Response.Write("");
//重新绑定
DataListBind();
}
}
//删除该条记录
protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
{
//实例化公共类的对象
DB db = new DB();
string userID = e.CommandArgument.ToString();
string sqlStr = "delete from tb_User where UserID=" + userID;
//更新数据库,变量reValue用于保存执行Sql语句的返回值,成功为1,失败为0
int reValue = db.sqlEx(sqlStr);
if (reValue == 0)
Response.Write("");
//重新绑定
DataListBind();
}
//删除记录前显示提示信息
protected void btnDelete_Load(object sender, EventArgs e)
{
((Button)sender).Attributes["onclick"] = "javascript:return confirm('你确认要删除该条记录吗?')";
}
//退出
protected void lnkbtnExit_Click(object sender, EventArgs e)
{
//清空Session中的内容,并停止Session
Session["ValidateNum"] = null;
Session["Role"] = null;
Session["UserID"] = null;
Session.Clear();
Session.Abandon();
//跳转到登录页
Response.Redirect("~/Login.aspx");
}
//根据用户权限判断该用户是否可以设置管理员
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (!Convert.ToBoolean(Session["Role"]))
{
switch (e.Item.ItemType)
{
case ListItemType.Item:
((Button)e.Item.FindControl("btnSetRole")).Enabled = false;
break;
case ListItemType .AlternatingItem :
((Button)e.Item.FindControl("btnSetRole")).Enabled = false;
break;
}
}
}
/***************************************ValidateNum.aspx 验证码(后台,前台无代码)*****************************************************/
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;//引入命名空间
public partial class ValidateNum : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string validateNum = CreateRandomNum(4);//成生4位随机字符串
CreateImage(validateNum);//将生成的随机字符串绘成图片
Session["ValidateNum"] = validateNum;//保存验证码
}
}
//生成随机字符串
private string CreateRandomNum(int NumCount)
{
string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";
string[] allCharArray = allChar.Split(',');//拆分成数组
string randomNum = "";
int temp = -1;//记录上次随机数的数值,尽量避免产生几个相同的随机数
Random rand = new Random();
for (int i = 0; i < NumCount; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
}
int t = rand.Next(35);
if (temp == t)
{
return CreateRandomNum(NumCount);
}
temp = t;
randomNum += allCharArray[t];
}
return randomNum;
}
//生成图片
private void CreateImage(string validateNum)
{
if (validateNum == null || validateNum.Trim() == String.Empty)
return;
//生成Bitmap图像
System.Drawing.Bitmap image = new System.Drawing.Bitmap(validateNum.Length * 12 + 10, 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for (int i = 0; i < 25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(validateNum, font, brush, 2, 2);
//画图片的前景噪音点
for (int i = 0; i < 100; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
//将图像保存到指定的流
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
}